Шаг 7 - О прошлом примере

Загрузить проект
В прошлом примере мы создавали и получали список имен NetBIOS. Вывод был простой, получить список имен можно только если программа сама зарегистрирует имя и используя это имя мы можем получить все остальные имена. Остался вопрос как долг существует NetBios имя. Вобщем-то до конца работы программы. Для проверки этого вывода необходимо создать две одинаковые программы, как в прошлом примере. Вы можете загрузить их из проекта и скомпилировать. Разница у этих программ в именах программ и NetBios именах.
 Имя программы         		NetBios имя
  TestApp1		#define LOCALNAME   "MYNET1"
  TestApp2		#define LOCALNAME   "MYNET2"
Кроме того в файлы добавленна ссылка на библиотеку conio.h
#include "conio.h"
И реализованна задержка завершения программы до нажатия на клавишу.
	........
	cout << pStatus->name_count << endl;
	cout << "Canсel" << endl;
	getch();
}
Запустите и завершите программу по очереди. Вы увидите только одно NetBios имя. А вот теперь запустите TestApp1 и не завершая выполнения TestApp2. У Вас должна быть примерно такая картина.

7_1.gif (6270 b)

Как видите имя живет и здравствует всем врагам назло до завершения программы.

Еще на что хочу обратить Ваше вимание это на то, как мы с Вами формировали это имя. Первое - мы завели константу.

#define LOCALNAME   "MYNET2"
Вычислили её длину.
i_strlen = strlen(LOCALNAME);
Проверили длину на соотвествие константе длины NCBNAMSZ и если длина больше, то уменьшили до константы длины.
if (i_strlen > NCBNAMSZ)    i_strlen = NCBNAMSZ;
Это константа описана в файле NB30.H
#define NCBNAMSZ        16    /* absolute length of a net name           */
При заполении NCB имя помещается в ncb_name. Сначала заполняем буфер пробелами на положенную длину memset, потом копируем туда имя memcpy.
memset (ncb1.ncb_name, ' ', NCBNAMSZ);
memcpy (ncb1.ncb_name, LOCALNAME, i_strlen);

И вуаля - имя готово. Надо бы сделать из этого процесса нармальную процедуру типа GenerateNetBiosName;

Hosted by uCoz